package demo1;
//静态内部类：

/**
 * 1.如何获取静态内部类的对象？
 * 2.如何在静态内部类中，访问外部类的非静态的数据成员?
 *             OutClass2 outClass2 = new OutClass2();
 *             System.out.println(outClass2.data1);
 */
class OutClass2 {
    public int data1 = 1;
    public int data2 = 2;
    public static int data3 = 3;

    static class InnerClass{
        public int data4 = 4;
        private int data5 = 5;
        public static int data6 = 6;
        public void test(){
            /*System.out.println(data1);//访问外部类的成员变量，这时候去向上找寻的时候，我们发现会导致找不到，会导致报错*/
            /*我们可以这么做：*/
            OutClass2 outClass2 = new OutClass2();
            System.out.println(outClass2.data1);
            System.out.println(data3);
            System.out.println(data4);
            System.out.println(data5);
            System.out.println(data6);
            System.out.println("内部类的test方法");
        }
    }
}

public class Test3 {
    public static void main(String[] args) {
        OutClass2.InnerClass innerClass = new OutClass2.InnerClass();
        //InnerClass是静态内部类，静态的需要用类名来访问。
        innerClass.test();
    }

}

/*
【注意事项】
1. 在静态内部类中只能访问外部类中的静态成员
如果确实想访问，我们该如何做？
2. 创建静态内部类对象时，不需要先创建外部类对象
* */